package aclInfoCollector.filesAnalysers.code;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;

public interface ICodeFileAnalyser 
{
	public void addClass(String s);
		
	/**
	 * Ajoute les classes et de leurs interfaces a l'attribut
	 * classesWithInterfaces
	 * 
	 * @param list
	 */
	public void addClassesWithInterfaces(HashMap<String, ArrayList<String>> list);
	
	/**
	 * Ajoute les classes et de leurs supertype a l'attribut
	 * classesWithSuperTypes
	 * 
	 * @param list
	 */
	public void addClassesWithSuperTypes(HashMap<String, ArrayList<String>> list);
	
	
	/**
	 * ajoute l'interface s a l'attribut interfaces
	 * 
	 * @param s
	 */
	public void addInterface(String s);
	
	/**
	 * Ajoute les interfaces et de leurs superinterfaces a l'attribut
	 * interfacesWithSuperInterFaces
	 * 
	 * @param list
	 */
	public void addInterfacesWithSuperInterFaces(HashMap<String, ArrayList<String>> list);	
	
	
	/**
	 * ajoute la primitive s a l'attribut primitives
	 * 
	 * @param s
	 */
	public void addPrimitive(String s);	
	
	/**
	 * lance l'analyse des fichier correspondant au path
	 * @param directoryPath
	 */
	public void launchAnalysis(String directoryPath);
	
	/**
	 * Parse le fichier f
	 * @param o
	 */
	public void parse(File f);
	
	/**
	 * Parse le fichier dont le chemin est s
	 * @param o
	 */
	public void parse(String s);
	
	/**
	 * Parse la classe représenté par o
	 * @param o
	 */
	public void parseClassType(Object o);
	
	/**
	 * Parse l'interface représenté par o
	 * @param o
	 */
	
	public void parseInterfaceType(Object o);

		
	/**
	 * Affiche les classes trouvées
	 */
	public void printClasses();

	/**
	 * Affichage des classes trouvées avec leurs supertypes
	 */
	public void printClassesWithSuperTypes();

	/**
	 * Affichage des interfaces trouvées
	 */
	public void printInterfaces();

	/**
	 * Affichage des interfaces trouvées avec leurs operations
	 */
	public void printInterfacesWithOperation();

	/**
	 * Affichage des primitives trouvées
	 */
	public void printPrimitives();

}
